# python是动态语言，在运行的时候可以动态添加属性。如果要限制在运行的时候给类添加属性，
# Python允许在定义class的时候，定义一个特殊的__slots__变量，来限制该class实例能添加的属性。
# 只有在__slots__变量中的属性才能被添加，没有在__slots__变量中的属性会添加失败。
# 可以防止其他人在调用类的时候胡乱添加属性或方法。__slots__属性子类不会继承，只有在当前类中有效。
class Person:
    __slots__ = ("name","age")
    pass
xm=Person()
xm.name="小明"
xm.age=22
# xm.sex="男"   #不能添加在slots属性中声明外的其他属性
print(xm.name)
print(xm.age)

# slots属性只会对当前的类有影响，不会被子类继承
class Student(Person):
    pass
xh=Student()
xh.name="小红"
xh.age=22
print(xh.age)
print(xh.name)
xh.sex="女"
print(xh.sex)
xh.hobby="唱歌"
print(xh.hobby)